﻿
using System;
using System.Runtime.Serialization;
using V82;
using V82.Перечисления;//Ссылка;
namespace V82.Перечисления//Ссылка
{
	[DataContract]
	public enum ИсточникиЗначенийРазрядов
	{
		[NonSerialized]
		ПустаяСсылка = - 1,
		[EnumMember(Value = "{\"Ссылка\":\"a418f74c-b77e-472e-811d-0b5b8dd00cb0\", \"Представление\":\"Организация\"}")]
		Организация = 1,
		[EnumMember(Value = "{\"Ссылка\":\"af33a893-bf16-4216-847e-712dfdd2a4ec\", \"Представление\":\"Подразделение\"}")]
		Подразделение = 2,
		[EnumMember(Value = "{\"Ссылка\":\"bc098ef5-13a8-4396-a8b6-9e3956ed4ca7\", \"Представление\":\"НоменклатурнаяГруппа\"}")]
		НоменклатурнаяГруппа = 3,//Номенклатурная группа
		[EnumMember(Value = "{\"Ссылка\":\"3dbe2dd0-c161-4d47-843c-22d721284c8a\", \"Представление\":\"Номенклатура\"}")]
		Номенклатура = 4,
		[EnumMember(Value = "{\"Ссылка\":\"889258cb-03b9-4036-a99c-1aacae124e86\", \"Представление\":\"УказываетсяПриВыпуске\"}")]
		УказываетсяПриВыпуске = 5,//Указывается при выпуске
		[EnumMember(Value = "{\"Ссылка\":\"927947dd-c228-4eda-bb5f-bc5d7f9741c5\", \"Представление\":\"Счетчик\"}")]
		Счетчик = 6,
		[EnumMember(Value = "{\"Ссылка\":\"66ae0522-fd0b-42de-9f73-57c27d7054e4\", \"Представление\":\"ДатаВремя\"}")]
		ДатаВремя = 7,//Дата / время
		[EnumMember(Value = "{\"Ссылка\":\"9cab1321-70ff-4bd8-a4e0-b1ab3ea25fc9\", \"Представление\":\"Разделитель\"}")]
		Разделитель = 8,
	}
	public static partial class ИсточникиЗначенийРазрядов_Значения//:ПеречислениеСсылка
	{
		public static readonly Guid Организация = new Guid("5b0b1d81-d08d-b00c-472e-b77ea418f74c");
		public static readonly Guid Подразделение = new Guid("2d717e84-d2fd-eca4-4216-bf16af33a893");
		public static readonly Guid НоменклатурнаяГруппа = new Guid("399eb6a8-ed56-a74c-4396-13a8bc098ef5");//Номенклатурная группа
		public static readonly Guid Номенклатура = new Guid("d7223c84-2821-8a4c-4d47-c1613dbe2dd0");
		public static readonly Guid УказываетсяПриВыпуске = new Guid("ac1a9ca9-12ae-864e-4036-03b9889258cb");//Указывается при выпуске
		public static readonly Guid Счетчик = new Guid("5dbc5fbb-977f-c541-4eda-c228927947dd");
		public static readonly Guid ДатаВремя = new Guid("c257739f-707d-e454-42de-fd0b66ae0522");//Дата / время
		public static readonly Guid Разделитель = new Guid("abb1e0a4-a23e-c95f-4bd8-70ff9cab1321");
		public static ИсточникиЗначенийРазрядов Получить(this ИсточникиЗначенийРазрядов Значение, byte[] Ссылка)
		{
			return Получить(Значение, new Guid(Ссылка));
		}
		public static ИсточникиЗначенийРазрядов Получить(this ИсточникиЗначенийРазрядов Значение, Guid Ссылка)
		{
			if(Ссылка == Организация)
			{
				return ИсточникиЗначенийРазрядов.Организация;
			}
			else if(Ссылка == Подразделение)
			{
				return ИсточникиЗначенийРазрядов.Подразделение;
			}
			else if(Ссылка == НоменклатурнаяГруппа)
			{
				return ИсточникиЗначенийРазрядов.НоменклатурнаяГруппа;
			}
			else if(Ссылка == Номенклатура)
			{
				return ИсточникиЗначенийРазрядов.Номенклатура;
			}
			else if(Ссылка == УказываетсяПриВыпуске)
			{
				return ИсточникиЗначенийРазрядов.УказываетсяПриВыпуске;
			}
			else if(Ссылка == Счетчик)
			{
				return ИсточникиЗначенийРазрядов.Счетчик;
			}
			else if(Ссылка == ДатаВремя)
			{
				return ИсточникиЗначенийРазрядов.ДатаВремя;
			}
			else if(Ссылка == Разделитель)
			{
				return ИсточникиЗначенийРазрядов.Разделитель;
			}
			return ИсточникиЗначенийРазрядов.ПустаяСсылка;
		}
		public static byte[] Ключ(this ИсточникиЗначенийРазрядов Значение)
		{
			return Ссылка(Значение).ToByteArray();
		}
		public static Guid Ссылка(this ИсточникиЗначенийРазрядов Значение)
		{
			switch (Значение)
			{
				case ИсточникиЗначенийРазрядов.Организация: return Организация;
				case ИсточникиЗначенийРазрядов.Подразделение: return Подразделение;
				case ИсточникиЗначенийРазрядов.НоменклатурнаяГруппа: return НоменклатурнаяГруппа;
				case ИсточникиЗначенийРазрядов.Номенклатура: return Номенклатура;
				case ИсточникиЗначенийРазрядов.УказываетсяПриВыпуске: return УказываетсяПриВыпуске;
				case ИсточникиЗначенийРазрядов.Счетчик: return Счетчик;
				case ИсточникиЗначенийРазрядов.ДатаВремя: return ДатаВремя;
				case ИсточникиЗначенийРазрядов.Разделитель: return Разделитель;
			}
			return Guid.Empty;
		}
	}
}